各位前輩好,小弟目前正在試圖前往開源的路上,目前先從生活中可能會碰到的問題來試著寫一些小套件來解決,對於文章有任何問題歡迎來信或留言討論,我的信箱是 nickchen1998@gmail.com。
今天要介紹的套件名字叫做 DataToWord,這個套件主要是協助我們將資料型態的檔案內容轉換成文章,提高我們在進行 RAG 的時候的搜索效果。
套件網址:https://pypi.org/project/datatoword/0.7.0/
簡單說明一下什麼是資料型態的檔案,比方說常見的 csv、json 等等,是用來做資料傳輸、交換的,可以看一下下方的格式:
{
"company": {
"name": "Tech Innovators Inc.",
"founded": 2010,
"employees": [
{
"name": "Alice Smith",
"age": 30,
"position": "Software Engineer",
"skills": ["Python", "Django", "Machine Learning"],
"projects": [
{"name": "AI Chatbot", "duration_months": 12, "team_size": 5},
{"name": "E-commerce Platform", "duration_months": 8, "team_size": 3}
]
},
{
"name": "Bob Johnson",
"age": 35,
"position": "Data Scientist",
"skills": ["Python", "Pandas", "Deep Learning"],
"projects": [
{"name": "Data Analysis Pipeline", "duration_months": 6, "team_size": 4},
{"name": "Recommendation System", "duration_months": 10, "team_size": 7}
]
}
]
}
}
name,age,position,skills,project_name,project_duration_months,project_team_size
Alice Smith,30,Software Engineer,"Python;Django;Machine Learning","AI Chatbot",12,5
Alice Smith,30,Software Engineer,"Python;Django;Machine Learning","E-commerce Platform",8,3
Bob Johnson,35,Data Scientist,"Python;Pandas;Deep Learning","Data Analysis Pipeline",6,4
Bob Johnson,35,Data Scientist,"Python;Pandas;Deep Learning","Recommendation System",10,7
而我們在進行 RAG 的時候,是將文本的內容轉換為向量,然後存進資料庫當中進行查詢,而在搜尋向量的時候,理論上會去搜尋與你的語句最相近的段落,因此可想而知,如果直接把上面的資料轉換成向量,然後使用一班正常問答的話,會沒有辦法正確找到相對應的資料。
這邊想到的辦法是將所有的資料,重新轉換成一段一段可以讀的文本,然後再寫入到向量資料庫當中進行查詢,讓我們看一下 DataToWord 這個套件的用法:
這個套件是使用 LangChain 套件來協助串接 OpenAI 的模型,預設是使用 gpt-4o,我們可以透過直接把 binary 型態的檔案傳遞給 create_documents 這個方法,來取得轉換後的文本內容。
from datatoword import DataToWord
with open('data.csv', 'rb') as file:
file_binary_content = file.read()
data_to_word = DataToWord()
data_to_word.create_documents(
file_name='data.csv',
file_description='這是一個測試的檔案',
file_binary_content=file_binary_content
)
當然,如果你只想單純取得轉換後的文本內容的話,也可以呼叫 create_content 這個方法,裡面會直接協助你轉換成 List[str],這個資料型態,讓你直接做取用
from datatoword import DataToWord
with open('data.csv', 'rb') as file:
file_binary_content = file.read()
data_to_word = DataToWord()
data_to_word.create_content(
file_name='data.csv',
file_description='這是一個測試的檔案',
file_binary_content=file_binary_content
)
以上就是這次介紹的小套件,如果有任何問題,歡迎留言一起討論,感謝您的觀看!
你好:對此專案有興趣,但是測試範例後出現錯誤:
ValueError: pass openai_api_key or set OPENAI_API_KEY in environment variable
不知道是否哪個步驟有問題?
您好,很抱歉這部份我文件似乎沒有寫好,如果您需要使用的話,需要把您的 key 設定到 OPENAI_API_KEY 這個環境變數,或是將 kye 在實體化的時候帶入給物件,帶入方法如下:
from datatoword import DataToWord
data_to_word = DataToWord(
openai_api_key="sk-xxxx"
)